﻿<?php
/**
* @version		1.0: view.html.php marum56
* @package		Joomla
*/

// Check to ensure this file is included in Joomla!
defined('_JEXEC') or die( 'Restricted access' );

jimport( 'joomla.application.component.view');

/**
 * HTML View class for the Users component
 *
 * @static
 * @package	Joomla
 * @subpackage	Paliwa
 * @since 1.0
 */
class PaliwaViewPaliwa extends JView
{
	function display($tpl = null)
	{
		global $mainframe, $option;
		$db =& JFactory::getDBO();
		
		/*
		 * Zapis/odczyt stanu strony w obiekcie klasy JRegistry,
		 * który znajduje sie w tablicy sesji.
		 */
		// Filter na wybrana kolumne
		$filter_order 		= $mainframe->getUserStateFromRequest( "$option.filter_order", 'filter_order', 'a.poj1', 'cmd' );
		// Filter na sposob sortowania: rosnacy lub malejacy
		$filter_order_Dir	= $mainframe->getUserStateFromRequest( "$option.filter_order_Dir", 'filter_order_Dir', '', 'word' );
		// Marka i model pojazdu
		$filter_poj2		= $mainframe->getUserStateFromRequest( "$option.filter_poj2", 'filter_poj2', 0,'string' );
		// Użytkownik
		$filter_uz		= $mainframe->getUserStateFromRequest( "$option.filter_uz", 'filter_uz', 0,'string' );
		// Spółka właściciel
		$filter_pwl6		= $mainframe->getUserStateFromRequest( "$option.filter_pwl6", 'filter_pwl6', 0,'string' );
		// Miesiąc
		$filter_mies		= $mainframe->getUserStateFromRequest( "$option.filter_mies", 'filter_mies', 0,'string' );
		// Usunięte
		$filter_del		= $mainframe->getUserStateFromRequest( "$option.filter_del", 'filter_del', 0, 'int' );
		$search			= $mainframe->getUserStateFromRequest( "$option.search", 'search', '', 'string' );
		// Oczyszczamy szukaj
		if (strpos($search, '"') !== false) {
			$search = str_replace(array('=', '<'), '', $search);
		}
		$search = JString::strtolower($search);
		
		// Limit ilosci wyswietlanych wierszy na stronie - wart. domyślne pobierane z "configuration.php"
		$limit	= $mainframe->getUserStateFromRequest( 'global.list.limit', 'limit', $mainframe->getCfg('list_limit'), 'int' );
		// Limit poczatkowy tzn. od ktorego wiersza tabeli sql rozpoczynamy wyswietlanie na stronie
		$limitstart = $mainframe->getUserStateFromRequest( $option.'.limitstart', 'limitstart', 0, 'int' );

		/*
		 * Filtry sortujące
		 */
		// Zapewnienie ze filter_order ma prawidlowa wartosc.
		if (!in_array($filter_order, array('a.poj2', 'c.uz', 'd.pwl6', 'e.mies'))) {
			$filter_order = 'a.poj2';
		}
		// Zapewnienie ze filter_order_Dir ma prawidlowa wartosc.
		if (!in_array(strtoupper($filter_order_Dir), array('ASC', 'DESC'))) {
			$filter_order_Dir = '';
		}
		$orderby = ' ORDER BY '. $filter_order .' '. $filter_order_Dir;
		
		// Tablica selekcji WHERE w SQL 
		$where = array();
		// Tablica dołączanych tabel SQL
		$inner = array();
		
		/*
		 * Tabela z pojazdami
		 */
		$from = ' FROM #__pojazdy AS a';
		if (isset( $search ) && $search != '') {
			$searchEscaped = $db->Quote( '%'.$db->getEscaped( $search, true ).'%', false );
			$where[] = 'a.poj1 LIKE '.$searchEscaped;
		}
		// Wyszukaj najmłodszych rekordów dla danego nr obiektu
		$where[] = 'a.registerDate = (SELECT max(registerDate) 
		                              FROM #__pojazdy
		                              WHERE gid = a.gid)';                             
		// Filtrowanie po usunietych obiektach
		$where[] = $filter_del ? 'a.del = 1' : 'a.del = 0';
		//Filtrowanie po typie pojazdu
		if ($filter_poj1) $where[] = 'a.poj1 = LOWER( '.$db->Quote($filter_poj1).' ) ';
		//Filtrowanie po marka i model pojazdu
		if ($filter_poj2) $where[] = 'a.poj2 = LOWER( '.$db->Quote($filter_poj2).' ) ';

		/*
		 * Tabela z numerami rejestracyjnymi
		 */
		$inner[] = ' INNER JOIN #__pojazdy_nr AS b ON b.gid = a.gid';
		// Wyszukaj najmłodszych rekordów dla danego nr obiektu
		$where[] = 'b.registerDate = (SELECT max(registerDate) 
		                              FROM #__pojazdy_nr
		                              WHERE gid = b.gid)';
	
		/*
		 * Tabela z użytkownikami
		 */
		$inner[] = ' INNER JOIN #__pojazdy_uz AS c ON c.gid = a.gid';
		// Wyszukaj najmłodszych rekordów dla danego nr obiektu
		$where[] = 'c.registerDate = (SELECT max(registerDate) 
		                              FROM #__pojazdy_uz
		                              WHERE gid = c.gid)';
		//Filtrowanie po użytkowniku
		if ($filter_uz) $where[] = 'c.uz = LOWER( '.$db->Quote($filter_uz).' ) ';
		
		/*
		* Tabela z właścicielem
		 */
		$inner[] = ' INNER JOIN #__pojazdy_wl AS d ON d.gid = a.gid';
		// Wyszukaj najmłodszych rekordów dla danego nr obiektu
		$where[] = 'd.registerDate = (SELECT max(registerDate) 
		                              FROM #__pojazdy_wl
		                              WHERE gid = d.gid)';
		//Filtrowanie po właścicielu
		if ($filter_pwl6) $where[] = 'd.pwl6 = LOWER( '.$db->Quote($filter_pwl6).' ) ';

		/*
		* Tabela z paliwami
		 */
		$inner[] = ' INNER JOIN #__paliwo AS e ON e.gid = a.gid';
		// Wyszukaj najmłodszych rekordów dla danego nr obiektu
		$where[] = 'e.registerDate = (SELECT max(registerDate) 
		                              FROM #__paliwo
		                              WHERE gid = e.gid)';
		//Filtrowanie po właścicielu
		if ($filter_mies) $where[] = 'e.mies = LOWER( '.$db->Quote($filter_mies).' ) ';
		
		
		$where = ( count( $where ) ? ' WHERE (' . implode( ') AND (', $where ) . ')' : '' );
		$inner = ( count( $inner ) ? implode( ' ', $inner ) : '' );

		
		/*
		 * Tabela z pojazdami.
		 */	 
		$query = 'SELECT a.*, b.nrr, c.uz, d.pwl6, e.*'
			. $from
			. $inner
			. $where
			. ' GROUP BY a.id'
			. $orderby
		;

		//Ile rekordow do wyswietlenia.
		$db->setQuery( $query );
		$arr = $db->loadResultArray();   // Zwraca tylko jedną kolumnę i to wystarczy do obliczenia ilości wierszy
		$total = count($arr);
		jimport('joomla.html.pagination');
		$pagination = new JPagination( $total, $limitstart, $limit );
		
		// Pobierz listę rekordów do wyświetlenia.
		$db->setQuery( $query, $pagination->limitstart, $pagination->limit );
		$rows = $db->loadObjectList();
		
		/*
		 * Buduj listy select
		 */
		 		
		/*
		 * Lista select marka i model pojazdu
		 */
		$query = 'SELECT DISTINCT(poj2) AS value'
			. ' FROM #__pojazdy'
		        . ' WHERE del = 0'
 		;
		$db->setQuery( $query );
		$poj2[] = JHTML::_('select.option',  0, '- Marka i model -' );
		foreach( $db->loadObjectList() as $obj )
		{
			$poj2[] = JHTML::_('select.option',  $obj->value, $obj->text );
		}
		$lists['poj2'] 	= JHTML::_('select.genericlist',   $poj2, 'filter_poj2', 'class="inputbox" size="1" onchange="document.adminForm.submit( );"', 'value', 'text', $filter_poj2);
		
		/*
		 * Lista selekt użytkownik
		 */
		$query = 'SELECT DISTINCT(uz) AS value'
			. ' FROM #__pojazdy_uz'
 		;
		$db->setQuery( $query );
		$uz[] = JHTML::_('select.option',  '', '- Użytkownik -' );
		foreach( $db->loadObjectList() as $obj )
		{
			$uz[] = JHTML::_('select.option',  $obj->value, $obj->text );
		}
		$lists['uz'] 	= JHTML::_('select.genericlist',   $uz, 'filter_uz', 'class="inputbox" size="1" onchange="document.adminForm.submit( );"', 'value', 'text', $filter_uz);
		
		/*
		 * Lista selekt właściciel - spółka
		 */
		$query = 'SELECT DISTINCT(pwl6) AS value'
			. ' FROM #__pojazdy_wl'
 		;
		$db->setQuery( $query );
		$pwl6[] = JHTML::_('select.option',  '', '- Spółka -' );
		foreach( $db->loadObjectList() as $obj )
		{
			$pwl6[] = JHTML::_('select.option',  $obj->value, $obj->text );
		}
		$lists['pwl6'] 	= JHTML::_('select.genericlist',   $pwl6, 'filter_pwl6', 'class="inputbox" size="1" onchange="document.adminForm.submit( );"', 'value', 'text', $filter_pwl6);
		
		/*
		 * Lista selekt miesiąc
		 */
		$query = 'SELECT DISTINCT(mies) AS value'
			. ' FROM #__paliwo'
 		;
		$db->setQuery( $query );
		$mies[] = JHTML::_('select.option',  '', '- Miesiąc -' );
		foreach( $db->loadObjectList() as $obj )
		{
			$mies[] = JHTML::_('select.option',  $obj->value, $obj->text );
		}
		$lists['mies'] 	= JHTML::_('select.genericlist',   $mies, 'filter_mies', 'class="inputbox" size="1" onchange="document.adminForm.submit( );"', 'value', 'text', $filter_mies);
		
		// Lista selekt usunietych
		$lists['del'] = msSelect::Arch($filter_del, 'Posiadane pojazdy', 'Usunięte pojazdy');

		
		// table ordering
		$lists['order_Dir']	= $filter_order_Dir;
		$lists['order']		= $filter_order;

		// search filter
		$lists['search'] = $search;
		
		$this->assignRef('lists', $lists);
		$this->assignRef('items', $rows);
		$this->assignRef('pagination', $pagination);

		parent::display($tpl='pdf');
	}
}
